In many storage networks, storage controller computing devices share a plurality of data storage devices in a cluster or array that may be hosted by a shelf or other enclosure. The storage controller computing devices may be cooperating to provide high availability or other storage services for the storage network. As one particular example, the storage controller computing devices may be a high availability (HA) pair of storage controllers that utilize an array of data storage devices hosted by one or mores shelves in a Fibre-attached storage (FAS) architecture.
In order to improve performance, storage controller computing devices can include a cache that can be comprised of flash memory, referred to herein as a flash cache. The cache can be populated by data that is read from the data storage devices of the storage array. Recently read data has an increased likelihood of being accessed again. Accordingly, in a subsequent access, the data in a flash cache can be served from the local, high performance, low latency flash cache allowing a requesting client device to obtain the data faster.
However, flash caches are generally expensive, limited in size, and in some implementations are maintained based on an age-based eviction policy such that data accessed more often is not more likely to be maintained in the cache any longer than data accessed less often. Moreover, in the event of a storage controller computing device failure, the flash cache is not accessible by another storage controller computing device (e.g., the other storage controller computing device in an HA pair). Accordingly, following a failover, operations on data previously maintained in a flash cache will require significantly more latency than may be expected while the flash cache on another storage controller computing device is populated.
As an alternate way of improving performance, storage arrays can include a plurality of solid state drives (SSDs), referred to herein as a flash pool, in addition to hard disk drives (HDDs). The SSDs can be flash-based and provide relatively low latency and insertion cost as compared to the HDDs, allowing some of the data stored in a file system to be accessed relatively quickly. The data stored on the SSDs can be the most recently used or accessed data in the file system, for example.
SSDs can advantageously be accessed by other storage controller computing devices (e.g., another storage controller computing device in an HA pair) in the event of a failover. However, insertion cost and latency are higher for a flash pool than for a flash cache. While the flash pool can store a relatively large amount of data as compared to a flash cache, many blocks of data inserted into the flash pool are never subsequently read from the flash pool, resulting in wasted resources required to facilitate the insertion.